#include "monitor.h"

#include "utils/redis_util.h"

Json::Value get_device_states() {
	Json::Value arr;
	auto res_opt = RedisUtil::keys("device_monitor:ccd*", 2000);
	if (res_opt.has_value()) {
		auto res = *res_opt;
		sort(res.begin(), res.end());
		for (const auto &key : res) {
			auto val_opt = RedisUtil::getValue(std::format("get {}", key));
			if (val_opt.has_value()) {
				Json::Reader reader;
				Json::Value val;
				if (reader.parse(val_opt.value(), val)) {
					val.removeMember("@type");
				}
				arr.append(val);
			}
		}
	} else {
		LOG_ERROR << "keys is null";
	}
	return arr;
};
